/************************************************************************************

*************************************************************************************/
#include "HX711.h"
#include "main.h"
#include "usart.h"
#include "tim.h"
uint32_t Weight_Maopi[4];
int32_t Weight_Shiwu[4];

//#define GapValue 106.5

//****************************************************
//
//****************************************************
void delay_us(uint16_t nus)
{
	__HAL_TIM_SetCounter(&htim6, 0);
	__HAL_TIM_ENABLE(&htim6);

	while (__HAL_TIM_GetCounter(&htim6) < nus)
		;

	__HAL_TIM_DISABLE(&htim6);
}

uint32_t HX711_Read(int id, GPIO_TypeDef *GPIOPBx, uint16_t GPIO_PBX_Pin, GPIO_TypeDef *GPIOSCKX, uint16_t GPIO_SCKX_Pin)
{
	unsigned long count;
	unsigned char i;
	HAL_GPIO_WritePin(GPIOPBx, GPIO_PBX_Pin, GPIO_PIN_SET); // HX711_DOUT=1;
	delay_us(1);
	HAL_GPIO_WritePin(GPIOSCKX, GPIO_SCKX_Pin, GPIO_PIN_RESET); // HX711_SCK=0;
	count = 0;
	while (HAL_GPIO_ReadPin(GPIOPBx, GPIO_PBX_Pin))
		;

	for (i = 0; i < 24; i++)
	{
		HAL_GPIO_WritePin(GPIOSCKX, GPIO_SCKX_Pin, GPIO_PIN_SET); // HX711_SCK=1;
		count = count << 1;
		delay_us(1);
		HAL_GPIO_WritePin(GPIOSCKX, GPIO_SCKX_Pin, GPIO_PIN_RESET); // HX711_SCK=0;
		if (HAL_GPIO_ReadPin(GPIOPBx, GPIO_PBX_Pin))
		{
			count++;
		}
		delay_us(1);
	}
	HAL_GPIO_WritePin(GPIOSCKX, GPIO_SCKX_Pin, GPIO_PIN_SET); // HX711_SCK=1;
	count = count ^ 0x800000;
	delay_us(1);
	HAL_GPIO_WritePin(GPIOSCKX, GPIO_SCKX_Pin, GPIO_PIN_RESET); // HX711_SCK=0;

	return (count);
}
//力传感器初始化
//****************************************************
void Weight_init(void)
{
	osDelay(2000);
	// Weight_Maopi[0] = HX711_Read(0, GPIO_PB1_GPIO_Port, GPIO_PB1_Pin, GPIO_SCK_GPIO_Port, GPIO_SCK_Pin);
	// Weight_Maopi[1] = HX711_Read(1, GPIO_PB2_GPIO_Port, GPIO_PB2_Pin, GPIO_SCK2_GPIO_Port, GPIO_SCK2_Pin);
	// Weight_Maopi[2] = HX711_Read(2, GPIO_PB3_GPIO_Port, GPIO_PB3_Pin, GPIO_SCK3_GPIO_Port, GPIO_SCK3_Pin);
	// Weight_Maopi[3] = HX711_Read(3, GPIO_PB4_GPIO_Port, GPIO_PB4_Pin, GPIO_SCK4_GPIO_Port, GPIO_SCK4_Pin);
}
//****************************************************
//力传感器执行
//****************************************************

void Weight_exe(void)
{

	// Weight_Shiwu[0] = (int32_t)(Weight_Maopi[0] - HX711_Read(0, GPIO_PB1_GPIO_Port, GPIO_PB1_Pin, GPIO_SCK_GPIO_Port, GPIO_SCK_Pin)) / 440;
	// Weight_Shiwu[1] = (int32_t)(Weight_Maopi[1] - HX711_Read(1, GPIO_PB2_GPIO_Port, GPIO_PB2_Pin, GPIO_SCK2_GPIO_Port, GPIO_SCK2_Pin)) / 400;
	// Weight_Shiwu[2] = (int32_t)(Weight_Maopi[2] - HX711_Read(2, GPIO_PB3_GPIO_Port, GPIO_PB3_Pin, GPIO_SCK3_GPIO_Port, GPIO_SCK3_Pin)) / 450;
	// Weight_Shiwu[3] = (int32_t)(Weight_Maopi[3] - HX711_Read(3, GPIO_PB4_GPIO_Port, GPIO_PB4_Pin, GPIO_SCK4_GPIO_Port, GPIO_SCK4_Pin)) / 450;
}
